#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<sys/wait.h>
#include<bits/sigaction.h>
void ChildExitHandle()
{
    printf("子进程退出\n");
    int status;

    pid_t pid = waitpid(-1,&status,WNOHANG);

    if (WIFEXITED(status))
    {
        printf("子进程id:%d \n",pid);
        printf("子进程的退出返回值：%d \n",WEXITSTATUS(status));
    }
};

int main(int argc, char const *argv[])
{
    struct sigaction sig;//声明配置结构体
    sig.sa_handler = ChildExitHandle;//设置信号回调函数
    
    sigaction(SIGCLD,&sig,NULL);//绑定信号与信号回调函数
    __pid_t pid = fork();
    
    if (pid == 0)
    {
        sleep(10);//子进程睡眠10秒
    }
    else
    {
        sleep(200);//父进程睡眠200秒
    }

    return 0;
}
